/*
 * GeneradorGUI.java
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 10/05/2010, 01:26:16 PM
 */
package com.ufps.cuatro.util.generadores;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.io.File;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.border.Border;

import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.modelo.biblioteca.StaticListModelObject;
import com.ufps.cuatro.modelo.representacion.OptionMenuPane;
import com.ufps.cuatro.modelo.representacion.Propiedad;
import com.ufps.cuatro.modelo.representacion.componente.Componente;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorEspejo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorLibre;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorExtra;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGenerador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorClaseCompleja;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorEnum;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodoGetter;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodoSetter;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorString;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorUnitario;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorVinculador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegrador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorExtra;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorMetodo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorSimple;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorModeloAsociado;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteGenerado;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteGeneradoSimple;
import com.ufps.cuatro.util.Utileria;
import com.ufps.cuatro.util.opciones.MyPreferences;
import com.ufps.cuatro.util.opciones.UtilOpciones;
import com.ufps.cuatro.vistas.plantilla.JDialogPreviewModeloAsociado;

/**
 * <i><b>GeneradorGUI:</b></i> <p>Esta Clase es la encargada de generar la vista 
 * previas de las representaciones configuradas por los Componentes que identifican
 * los Tipos de datos del Modelo Analizado.</p>
 * <p>Provee todos los mecanismos para la creación y configuración de vistas previas.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 10/05/2010 
 */
public abstract class GeneradorGUI {  
    
    /**
     * Configura las Propiedades Asignadas al Componente.
     * @param objComponente Componente al que se le Configurarán las Propiedades.
     */
    public static void configurarPropiedades(Componente objComponente){
        try{
            for(Propiedad objPropiedad : objComponente.getObjPropiedadesDisponibles()){
                if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_TEXT)){
                    configurarPropiedadText(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_TOOLTIPS)){
                    configurarPropiedadToolTips(objComponente, objPropiedad);
                }            
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_ENABLED)){
                    configurarPropiedadEstado(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_OPAQUE)){
                    configurarPropiedadOpaco(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_EDITABLE)){
                    configurarPropiedadEdicion(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_SELECTED)){
                    configurarPropiedadSeleccionCasilla(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_FOREGROUND)){
                    configurarPropiedadColorTexto(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_BACKGROUND)){
                    configurarPropiedadColorFondo(objComponente, objPropiedad);
                }
                else if(objPropiedad.getName().equals(Propiedad.NAME_PROPERTIES_ICON)){
                    configurarPropiedadImageIcon(objComponente, objPropiedad);
                }
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }
    
    /**
     * Configura la Propiedad Texto.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadText(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                String strText = String.valueOf(objPropiedad.getValue());
                UtilRender.loadTextJComponent(objJComponent, strText);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }        
    }
    
    /**
     * Configura la Propiedad ToolTips.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadToolTips(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                String strText = String.valueOf(objPropiedad.getValue());
                UtilRender.loadToolTipsJComponent(objJComponent, strText);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }
    }
    
    /**
     * Configura la Propiedad Estado.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadEstado(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                boolean boolEstado = Boolean.parseBoolean(String.valueOf(objPropiedad.getValue()));
                UtilRender.loadEnableJComponent(objJComponent, boolEstado);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }
    }
    
    /**
     * Configura la Propiedad Opaco.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadOpaco(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                boolean boolEstado = Boolean.parseBoolean(String.valueOf(objPropiedad.getValue()));
                UtilRender.loadOpaqueJComponent(objJComponent, boolEstado);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }
    
    /**
     * Configura la Propiedad Edición de Texto.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadEdicion(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                boolean boolEstado = Boolean.parseBoolean(String.valueOf(objPropiedad.getValue()));
                UtilRender.loadEditableJComponent(objJComponent, boolEstado);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }
    
    /**
     * Configura la Propiedad Selección de Casilla.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadSeleccionCasilla(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                boolean boolEstado = Boolean.parseBoolean(String.valueOf(objPropiedad.getValue()));
                UtilRender.loadSelectedJComponent(objJComponent, boolEstado);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }
    
    /**
     * Configura la Propiedad Color de Texto.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadColorTexto(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                Color objColor = new Color(Integer.parseInt(String.valueOf(objPropiedad.getValue())));
                UtilRender.loadForegroundJComponent(objJComponent, objColor);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }
    
    /**
     * Configura la Propiedad Color de Fondo.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadColorFondo(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                Color objColor = new Color(Integer.parseInt(String.valueOf(objPropiedad.getValue())));
                UtilRender.loadBackgroundJComponent(objJComponent, objColor);
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }      
    }
    
    /**
     * Configura la Propiedad Icono.
     * @param objComponente Componente al que se Configurará la Propiedad.
     * @param objPropiedad Propiedad Configurada.
     */
    public static void configurarPropiedadImageIcon(Componente objComponente, Propiedad objPropiedad){
        try{
            if(objComponente.getObjControlSwing() instanceof JComponent){
                String strPath = String.valueOf(objPropiedad.getValue());
                if(Utileria.esValido(strPath)){
                    File objFilePath = new File(strPath);
                    if(objFilePath.exists()){
                        JComponent objJComponent = (JComponent) objComponente.getObjControlSwing();
                        if(objJComponent instanceof JLabel || objJComponent instanceof JButton){
                            UtilRender.loadIconoJComponent(objJComponent, strPath);
                        }
                    }
                    else{
                        UtilRender.printlnConsole("No existe el Path: " + strPath, UtilRender.ACTION_ERROR, false);                    
                    }
                }
            }
        }catch(java.lang.Exception ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }    
    
    /**
     * Agrega la Representación del Componente en un Panel por medio del Distribuidor.
     * @param objComponente Componente que representa el área de interfaz gráfica.
     * @param objPanel Panel donde se agregará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución utilizado.
     */
    public static void ubicarComponente(Componente objComponente, JPanel objPanel, GridBagLayout objDistribuidor){                           
       try{
        if(objComponente.instanciar()){
            if(objComponente.isContenedor()){                            
                if(objComponente.getObjContenedorSwing() != null){
                    configurarPropiedades(objComponente);
                    if(objComponente instanceof ComponenteGenerado){
                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                        if(objComponenteGenerado.getStaticListModelString() != null){
                            addModelStaticListView(objComponenteGenerado);
                        }
                    }                    
                    JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();                    
                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();                    
                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                }
            }
            else{
                if(objComponente.getObjControlSwing() != null){
                    configurarPropiedades(objComponente);
                    if(objComponente instanceof ComponenteGenerado){
                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                        if(objComponenteGenerado.getStaticListModelString() != null){
                            addModelStaticListView(objComponenteGenerado);
                        }
                    }                      
                    JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();                    
                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();                    
                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                }
            }                
        }
    }catch(java.lang.NullPointerException ex){
        UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
    }
    }

    private static void addComponentToView(JComponent jObjGUI, GridBagLayout objDistribuidor, GridBagConstraints reglas, JPanel objPanel) {
        if(isRequiredSrollPane(jObjGUI)){
            JComponent jObjTemp = addViewScrollPane(jObjGUI);
            objDistribuidor.setConstraints(jObjTemp, reglas);
            objPanel.add(jObjGUI);        
        }
        else{            
            objDistribuidor.setConstraints(jObjGUI, reglas);            
            objPanel.add(jObjGUI);
        }
    }
    
    /**
     * Agrega la Representación del Componente en un Panel por medio del Distribuidor.
     * @param objComponente Componente que representa el área de interfaz gráfica.
     * @param objPanel Panel donde se agregará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución utilizado.
     * @param objGridBagConstraintsParent Reglas de Ubicación del Objeto Padre que se utilizará para la ubicación del
     * control representado por el <code>Componente</code>.
     */
    public static void ubicarComponente(Componente objComponente, JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objGridBagConstraintsParent){                           
       try{
        if(objComponente.instanciar()){
            if(objComponente.isContenedor()){                            
                if(objComponente.getObjContenedorSwing() != null){
                    configurarPropiedades(objComponente);
                    if(objComponente instanceof ComponenteGenerado){
                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                        if(objComponenteGenerado.getStaticListModelString() != null){
                            addModelStaticListView(objComponenteGenerado);
                        }
                    }                    
                    JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();                    
                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();                    
                    reglas.gridx += objGridBagConstraintsParent.gridx;
                    reglas.gridy += objGridBagConstraintsParent.gridy;
                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                }
            }
            else{
                if(objComponente.getObjControlSwing() != null){                    
                    if(objComponente instanceof ComponenteGenerado){
                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                        if(objComponenteGenerado.getStaticListModelString() != null){
                            addModelStaticListView(objComponenteGenerado);
                        }
                    }  
                    configurarPropiedades(objComponente);
                    JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();                    
                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();                    
                    reglas.gridx += objGridBagConstraintsParent.gridx;
                    reglas.gridy += objGridBagConstraintsParent.gridy;
                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                }
            }                
        }
    }catch(java.lang.NullPointerException ex){
        UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
    }
       
    }
    
    /**
     * Agrega la Representación del Componente en un Panel por medio del Distribuidor.
     * @param objComponente Componente que representa el área de interfaz gráfica.
     * @param objPanel Panel donde se agregará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución utilizado.
     * @param objArray Grupo de Items que se incluira en la Representación del Componente.
     */
    public static void ubicarComponente(Componente objComponente, JPanel objPanel, GridBagLayout objDistribuidor, Object[] objArray){                           
       try{
        if(objComponente.instanciar()){
            if(objComponente.isContenedor()){
                if(objComponente.getObjContenedorSwing() != null){  
                    configurarPropiedades(objComponente);
                    if(objComponente instanceof ComponenteGenerado){
                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                        if(objComponenteGenerado.getStaticListModelString() != null){
                            addModelStaticListView(objComponenteGenerado);
                        }
                        else if(objComponente.getObjControlSwing() instanceof JComboBox){
                            JComboBox objComboModel = new JComboBox(objArray);
                            JComboBox objCombo = (JComboBox) objComponente.getObjControlSwing();
                            objCombo.setModel(objComboModel.getModel());
                            objComponente.setObjControlSwing(objCombo);
                        }
                    }   
//                    if(objComponente.getObjControlSwing() instanceof JComboBox){
//                        JComboBox objComboModel = new JComboBox(objArray);
//                        JComboBox objCombo = (JComboBox) objComponente.getObjControlSwing();
//                        objCombo.setModel(objComboModel.getModel());
//                        objComponente.setObjControlSwing(objCombo);
//                    }                    
                    JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();
                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                }
            }
            else{
                if(objComponente.getObjControlSwing() != null){                    
                    configurarPropiedades(objComponente);
                    if(objComponente instanceof ComponenteGenerado){
                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                        if(objComponenteGenerado.getStaticListModelString() != null){
                            addModelStaticListView(objComponenteGenerado);
                        }
                    }                    
                    JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();
                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                }
            }
        }
    }catch(java.lang.NullPointerException ex){
        UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
    }
       
    }
    
    /**
     * Agrega la Representación del Componente en un Panel por medio del Distribuidor.
     * @param objComponente Componente que representa el área de interfaz gráfica.
     * @param objPanel Panel donde se agregará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución utilizado.
     * @param objArray Grupo de Items que se incluira en la Representación del Componente.
     * @param objGridBagConstraintsParent Reglas de Ubicación del Objeto Padre que se utilizará para la ubicación del
     * control representado por el <code>Componente</code>. 
     */
    public static void ubicarComponente(Componente objComponente, JPanel objPanel, GridBagLayout objDistribuidor, Object[] objArray, GridBagConstraints objGridBagConstraintsParent){
        try{
            if(objComponente.instanciar()){
                if(objComponente.isContenedor()){
                    if(objComponente.getObjContenedorSwing() != null){
                        configurarPropiedades(objComponente);
                        if(objComponente instanceof ComponenteGenerado){
                            ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                            if(objComponenteGenerado.getStaticListModelString() != null){
                                addModelStaticListView(objComponenteGenerado);
                            }
                            else if(objComponente.getObjControlSwing() instanceof JComboBox){
                                JComboBox objComboModel = new JComboBox(objArray);
                                JComboBox objCombo = (JComboBox) objComponente.getObjControlSwing();
                                objCombo.setModel(objComboModel.getModel());
                                objComponente.setObjControlSwing(objCombo);
                            }
                        }   
//                        if(objComponente.getObjControlSwing() instanceof JComboBox){
//                            JComboBox objComboModel = new JComboBox(objArray);
//                            JComboBox objCombo = (JComboBox) objComponente.getObjControlSwing();
//                            objCombo.setModel(objComboModel.getModel());
//                            objComponente.setObjControlSwing(objCombo);
//                        }                    
                        JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();
                        GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                        reglas.gridx += objGridBagConstraintsParent.gridx;
                        reglas.gridy += objGridBagConstraintsParent.gridy;
                        addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                    }
                }
                else{
                    if(objComponente.getObjControlSwing() != null){                    
                        configurarPropiedades(objComponente);
                        if(objComponente instanceof ComponenteGenerado){
                            ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                            if(objComponenteGenerado.getStaticListModelString() != null){
                                addModelStaticListView(objComponenteGenerado);
                            }
                        }                    
                        JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();
                        GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                        reglas.gridx += objGridBagConstraintsParent.gridx;
                        reglas.gridy += objGridBagConstraintsParent.gridy;
                        addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                    }
                }
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }       
    }
    
    /**
     * Agrega un Grupo de Opciones a la Representación del Componente.
     * @param objComponenteGenerado Componente al que se le Agregará el Grupo de opciones.
     */
    public static void addModelStaticListView(ComponenteGenerado objComponenteGenerado){
        try{
            StaticListModelObject objStaticListModelObject = objComponenteGenerado.getStaticListModelString();
            Object[] items = objStaticListModelObject.getObjItems().toArray();
            if(objComponenteGenerado.getObjControlSwing() instanceof JComboBox){                
                JComboBox objComboSource = (JComboBox) objComponenteGenerado.getObjControlSwing();
                JComboBox objComboTemp = new JComboBox(items);
                objComboSource.setModel(objComboTemp.getModel());
            }
            else if(objComponenteGenerado.getObjControlSwing() instanceof JList){
                JList objListSource = (JList) objComponenteGenerado.getObjControlSwing();
                JList objListTemp = new JList(items);                                
                objListSource.setModel(objListTemp.getModel());                
            }            
        }catch(java.lang.NullPointerException ex){            
            UtilRender.printlnConsole(ex.getMessage(), UtilRender.ACTION_ERROR, true);
        }                
    }
    
    /**
     * 
     * @param jComponent
     * @return
     */
    public static JComponent addViewScrollPane(JComponent jComponent){        
        JScrollPane objScroll = new JScrollPane(jComponent);        
        return objScroll;
    }
    
    /**
     * 
     * @param jComponent
     * @return
     */
    public static boolean isRequiredSrollPane(JComponent jComponent){
        return jComponent instanceof JList ||
                jComponent instanceof JComboBox;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorExtra</code>.
     * @param objComponenteExtra Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorExtra</code>.
     * @deprecated método obsoleto se ha reemplazdo por una representación por tipos de datos.
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorExtra objComponenteExtra){
      if(objComponenteExtra != null){
            JPanel objPanel = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanel.setLayout(objDistribuidor);        
            aplicarPreferenciasPanel(objPanel, objComponenteExtra);
            try{            
                ArrayList<Componente> objComponentes = objComponenteExtra.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    try{                    
                        ubicarComponente(objComponente, objPanel, objDistribuidor); 
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }                                    
                return objPanel;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
    }else{
            UtilRender.printlnConsole("objComponenteExtra Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorGeneradorUnitario</code>.
     * @param objComponenteGeneradorUnitario Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorGeneradorUnitario</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario){
      if(objComponenteGeneradorUnitario != null){
        JPanel objPanel = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        objPanel.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanel, objComponenteGeneradorUnitario);
        try{            
            ArrayList<Componente> objComponentes = objComponenteGeneradorUnitario.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                try{                    
                    ubicarComponente(objComponente, objPanel, objDistribuidor);                     
                }catch (java.lang.NullPointerException ex){
                    continue;
                }
            }                                    
            return objPanel;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("objComponenteGeneradorUnitario Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorGeneradorString</code>.
     * @param objComponenteDistribuidorGeneradorString 
     * @return Panel que representa el <code>ComponenteDistribuidorGeneradorString</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorString objComponenteDistribuidorGeneradorString){
      if(objComponenteDistribuidorGeneradorString != null){
        JPanel objPanel = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        objPanel.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanel, objComponenteDistribuidorGeneradorString);
        try{            
            ArrayList<Componente> objComponentes = objComponenteDistribuidorGeneradorString.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                try{                    
                    ubicarComponente(objComponente, objPanel, objDistribuidor);                     
                }catch (java.lang.NullPointerException ex){
                    continue;
                }
            }                                    
            return objPanel;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("objComponenteDistribuidorGeneradorString Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorGeneradorEnum</code>.
     * @param objComponenteGeneradorEnum Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorGeneradorEnum</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnum){
      if(objComponenteGeneradorEnum != null){
            JPanel objPanel = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanel.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanel, objComponenteGeneradorEnum);
            try{            
                ArrayList<Componente> objComponentes = objComponenteGeneradorEnum.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    try{
                        ubicarComponente(objComponente, objPanel, objDistribuidor, objComponenteGeneradorEnum.getObjItems().toArray());                                         
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }                                    
                return objPanel;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
    }else{
            UtilRender.printlnConsole("objComponenteGeneradorEnum Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Genera un Panel que representará el <code>objComponenteGeneradorVinculador</code>.
     * @param objComponenteGeneradorVinculador Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>objComponenteGeneradorVinculador</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador){
       if(objComponenteGeneradorVinculador != null){
            JPanel objPanel = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanel.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanel, objComponenteGeneradorVinculador);
            try{            
                ArrayList<Componente> objComponentes = objComponenteGeneradorVinculador.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    try{
                        ubicarComponente(objComponente, objPanel, objDistribuidor, objComponenteGeneradorVinculador.getObjItems().toArray());                                         
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }                                    
                return objPanel;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorVinculador Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return null;
    }    
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorGeneradorMetodoSetter</code>.
     * @param objComponenteGeneradorMetodoSetter Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorGeneradorMetodoSetter</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter){
	if(objComponenteGeneradorMetodoSetter != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteGeneradorMetodoSetter);
            try{            
                ArrayList<Componente> objComponentes = objComponenteGeneradorMetodoSetter.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteClase);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteUnitario);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteString);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            JPanel objPanelEnum = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteEnum);
                            if(objPanelEnum != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelEnum, reglas);
                                objPanelParent.add(objPanelEnum);                                
                            }                    
                        }                
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            JPanel objPanelVinculador = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteVinculador);
                            if(objPanelVinculador != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelVinculador, reglas);
                                objPanelParent.add(objPanelVinculador);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{ 
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                                          
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorMetodoSetter Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorGeneradorMetodoGetter</code>.
     * @param objComponenteGeneradorMetodoGetter Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorGeneradorMetodoGetter</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter){
	if(objComponenteGeneradorMetodoGetter != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteGeneradorMetodoGetter);
            try{            
                ArrayList<Componente> objComponentes = objComponenteGeneradorMetodoGetter.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteClase);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteUnitario);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteString);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            JPanel objPanelEnum = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteEnum);
                            if(objPanelEnum != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelEnum, reglas);
                                objPanelParent.add(objPanelEnum);                                
                            }                    
                        }                
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            JPanel objPanelEnum = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteVinculador);
                            if(objPanelEnum != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelEnum, reglas);
                                objPanelParent.add(objPanelEnum);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorMetodoGetter Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorGeneradorClaseCompleja</code>.
     * @param objComponenteGeneradorClase Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorGeneradorClaseCompleja</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase){
	if(objComponenteGeneradorClase != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteGeneradorClase);
            try{            
                ArrayList<Componente> objComponentes = objComponenteGeneradorClase.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoSetter){
                            ComponenteDistribuidorGeneradorMetodoSetter objComponenteMetodoSetter = (ComponenteDistribuidorGeneradorMetodoSetter) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteMetodoSetter);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoGetter){
                            ComponenteDistribuidorGeneradorMetodoGetter objComponenteMetodoGetter = (ComponenteDistribuidorGeneradorMetodoGetter) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteMetodoGetter);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }                    
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteGenerador);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteGenerador = (ComponenteDistribuidorGeneradorString) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteGenerador);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteGenerador = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteGenerador);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteGenerador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteGenerador);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorClase Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorIntegradorMetodo</code>.
     * @param objComponenteIntegradorMetodo Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorIntegradorMetodo</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo){
        if(objComponenteIntegradorMetodo != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteIntegradorMetodo);
            try{            
                ArrayList<Componente> objComponentes = objComponenteIntegradorMetodo.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteClase);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteUnitario);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteString);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            JPanel objPanelEnum = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteEnum);
                            if(objPanelEnum != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelEnum, reglas);
                                objPanelParent.add(objPanelEnum);                                
                            }                    
                        }                
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            JPanel objPanelVinculador = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteVinculador);
                            if(objPanelVinculador != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelVinculador, reglas);
                                objPanelParent.add(objPanelVinculador);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteIntegradorMetodo Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorIntegradorSimple</code>.
     * @param objComponenteIntegradorSimple Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorIntegradorSimple</code>.     
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple){
	if(objComponenteIntegradorSimple != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteIntegradorSimple);
            try{            
                ArrayList<Componente> objComponentes = objComponenteIntegradorSimple.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteClaseCompleja);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteUnitario);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteString);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            JPanel objPanelEnum = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteEnum);
                            if(objPanelEnum != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelEnum, reglas);
                                objPanelParent.add(objPanelEnum);                                
                            }                    
                        }                
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            JPanel objPanelVinculador = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteVinculador);
                            if(objPanelVinculador != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelVinculador, reglas);
                                objPanelParent.add(objPanelVinculador);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteIntegradorSimple Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorIntegradorExtra</code>.
     * @param objComponenteIntegradorExtra Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorIntegradorExtra</code>.     
     * @deprecated método obsoleto, se ha reemplazado por una representación por tipos de datos.
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra){
	if(objComponenteIntegradorExtra != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteIntegradorExtra);
            try{            
                ArrayList<Componente> objComponentes = objComponenteIntegradorExtra.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorExtra){
                            ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteExtra);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }                                
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteIntegradorExtra Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorModeloAsociado</code>.
     * @param objComponenteDistribuidorModeloAsociado Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorModeloAsociado</code>.          
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado){
	if(objComponenteDistribuidorModeloAsociado != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteDistribuidorModeloAsociado);
            try{            
                ArrayList<Componente> objComponentes = objComponenteDistribuidorModeloAsociado.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteClase);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteUnitario);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            JPanel objPanelUnitario = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteString);
                            if(objPanelUnitario != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelUnitario, reglas);
                                objPanelParent.add(objPanelUnitario);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            JPanel objPanelEnum = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteEnum);
                            if(objPanelEnum != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelEnum, reglas);
                                objPanelParent.add(objPanelEnum);                                
                            }                    
                        } 
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            JPanel objPanelVinculador = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteVinculador);
                            if(objPanelVinculador != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelVinculador, reglas);
                                objPanelParent.add(objPanelVinculador);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorExtra){
                            ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                            JPanel objPanelClase = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteExtra);
                            if(objPanelClase != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelClase, reglas);
                                objPanelParent.add(objPanelClase);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
    }else{
            UtilRender.printlnConsole("objComponenteDistribuidorModeloAsociado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorContenedorLibre</code>.
     * @param objComponenteContenedorAsistenteLibre Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorContenedorLibre</code>.
     * @deprecated método obsoleto, reemplezado por representaciones de tipos de datos.
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorContenedorLibre objComponenteContenedorAsistenteLibre){
	if(objComponenteContenedorAsistenteLibre != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteContenedorAsistenteLibre);
            try{            
                ArrayList<Componente> objComponentes = objComponenteContenedorAsistenteLibre.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorIntegradorExtra){
                            ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra = (ComponenteDistribuidorIntegradorExtra) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteIntegradorExtra);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorExtra){
                            ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteExtra);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteContenedorAsistenteLibre Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera un Panel que representará el <code>ComponenteDistribuidorContenedorEspejo</code>.
     * @param objComponenteContenedorAsistenteEspejo Componente que genera la Representación Gráfica.
     * @return Panel que representa el <code>ComponenteDistribuidorContenedorEspejo</code>.          
     */
    public static JPanel crearPanelComponenteDistribuidor(ComponenteDistribuidorContenedorEspejo objComponenteContenedorAsistenteEspejo){
	if(objComponenteContenedorAsistenteEspejo != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteContenedorAsistenteEspejo);
            try{            
                ArrayList<Componente> objComponentes = objComponenteContenedorAsistenteEspejo.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorIntegradorMetodo){
                            ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo = (ComponenteDistribuidorIntegradorMetodo) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteIntegradorMetodo);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorIntegradorSimple){
                            ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple = (ComponenteDistribuidorIntegradorSimple) objComponente;
                            JPanel objPanelExtra = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteIntegradorSimple);
                            if(objPanelExtra != null){
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelExtra, reglas);
                                objPanelParent.add(objPanelExtra);                                
                            }                    
                        }                
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteContenedorAsistenteEspejo Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorModeloAsociado</code> en un Panel.
     * @param objPanel Panel donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objComponenteDistribuidorModeloAsociado Componente que Contiene la Representación Gráfica.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @return Panel actualizado con la representación gráfica. 
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado){        
      if(objComponenteDistribuidorModeloAsociado != null){
            try{            
                ArrayList<Componente> objComponentes = objComponenteDistribuidorModeloAsociado.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    try{                    
                        if(objComponente.instanciar()){
                            if(objComponente.isContenedor()){
                                if(objComponente.getObjContenedorSwing() != null){
                                    configurarPropiedades(objComponente);
                                    JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();
                                    GridBagConstraints reglas = objComponenteDistribuidorModeloAsociado.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                    objDistribuidor.setConstraints(jObjGUI, reglas);
                                    objPanel.add(jObjGUI);                                
                                }
                            }
                            else{
                                if(objComponente.getObjControlSwing() != null){
                                    configurarPropiedades(objComponente);
                                    JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();
                                    GridBagConstraints reglas = objComponenteDistribuidorModeloAsociado.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                    objDistribuidor.setConstraints(jObjGUI, reglas);
                                    objPanel.add(jObjGUI);                                
                                }
                            }
                        }                    
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                } 
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return false;
        }else{
            UtilRender.printlnConsole("objComponenteDistribuidorModeloAsociado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidor</code> en un Panel.
     * @param objPanel Panel donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objComponenteDistribuidor <code>ComponenteDistribuidor</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidor objComponenteDistribuidor){        
      try{
        try{            
            ArrayList<Componente> objComponentes = objComponenteDistribuidor.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                try{                    
                    if(objComponente.instanciar()){
                        if(objComponente.isContenedor()){                            
                            if(objComponente.getObjContenedorSwing() != null){
                                configurarPropiedades(objComponente);
                                if(objComponente instanceof ComponenteGenerado){
                                    ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                                    if(objComponenteGenerado.getStaticListModelString() != null){
                                        addModelStaticListView(objComponenteGenerado);
                                    }
                                }   
                                JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();
                                GridBagConstraints reglas = objComponenteDistribuidor.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                objDistribuidor.setConstraints(jObjGUI, reglas);
                                objPanel.add(jObjGUI);                                
                            }
                        }
                        else{
                            if(objComponente.getObjControlSwing() != null){
                                configurarPropiedades(objComponente);
                                if(objComponente instanceof ComponenteGenerado){
                                    ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                                    if(objComponenteGenerado.getStaticListModelString() != null){
                                        addModelStaticListView(objComponenteGenerado);
                                    }
                                }
                                JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();
                                GridBagConstraints reglas = objComponenteDistribuidor.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                objDistribuidor.setConstraints(jObjGUI, reglas);
                                objPanel.add(jObjGUI);                                
                            }
                        }
                    }                    
                }catch (java.lang.NullPointerException ex){
                    Utileria.viewConsole("Error Null - Componente: " + objComponente.getName());
                    continue;
                }
            } 
            return true;
        }catch(java.lang.Exception ex){
            Utileria.viewConsole("Componente: " + objComponenteDistribuidor.getName());
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        } 
      }catch(java.lang.NullPointerException ex){}
        return false;
    }  
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorGeneradorEnum</code> en un Panel.
     * @param objPanel Panel donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @param objComponenteGeneradorEnum <code>ComponenteDistribuidorGeneradorEnum</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnum){        
        try{
            try{            
                ArrayList<Componente> objComponentes = objComponenteGeneradorEnum.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    try{                    
                        if(objComponente.instanciar()){
                            if(objComponente.isContenedor()){
                                if(objComponente.getObjContenedorSwing() != null){
                                    if(objComponente.getObjControlSwing() instanceof JComboBox){
                                        JComboBox objComboModel = new JComboBox(objComponenteGeneradorEnum.getObjItems().toArray());
                                        JComboBox objCombo = (JComboBox) objComponente.getObjControlSwing();
                                        objCombo.setModel(objComboModel.getModel());
                                        objComponente.setObjControlSwing(objCombo);
                                        if(objComponente instanceof ComponenteGenerado){
                                            ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                                            if(objComponenteGenerado.getStaticListModelString() != null){
                                                addModelStaticListView(objComponenteGenerado);
                                            }
                                        }
                                    }
                                    JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();                                
                                    GridBagConstraints reglas = objComponenteGeneradorEnum.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                                }
                            }
                            else{
                                if(objComponente.getObjControlSwing() != null){
                                    configurarPropiedades(objComponente);
                                    JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();
                                    GridBagConstraints reglas = objComponenteGeneradorEnum.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                    addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                                }
                            }
                        }                    
                    }catch (java.lang.NullPointerException ex){
                        UtilRender.printlnConsole("Error Null - Componente: " + objComponente.getName(), UtilRender.ACTION_ERROR, true);
                        continue;
                    }
                } 
                return true;
            }catch(java.lang.Exception ex){
                UtilRender.printlnConsole("Componente: " + objComponenteGeneradorEnum.getName(), UtilRender.ACTION_ERROR, true);                                
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole("ExceptionNullPointer", UtilRender.ACTION_ERROR, true);
        }
        return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorGeneradorVinculador</code> en un Panel.
     * @param objPanel Panel donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objComponenteGeneradorVinculador <code>ComponenteDistribuidorGeneradorVinculador</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador){
      try{
        try{            
            ArrayList<Componente> objComponentes = objComponenteGeneradorVinculador.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                try{                    
                    if(objComponente.instanciar()){
                        if(objComponente.isContenedor()){
                            if(objComponente.getObjContenedorSwing() != null){
                                if(objComponente.getObjControlSwing() instanceof JComboBox){
                                    JComboBox objComboModel = new JComboBox(objComponenteGeneradorVinculador.getObjItems().toArray());
                                    JComboBox objCombo = (JComboBox) objComponente.getObjControlSwing();
                                    objCombo.setModel(objComboModel.getModel());
                                    objComponente.setObjControlSwing(objCombo);
                                    if(objComponente instanceof ComponenteGenerado){
                                        ComponenteGenerado objComponenteGenerado = (ComponenteGenerado) objComponente;
                                        if(objComponenteGenerado.getStaticListModelString() != null){
                                            addModelStaticListView(objComponenteGenerado);
                                        }
                                    }
                                }
                                JComponent jObjGUI = (JComponent) objComponente.getObjContenedorSwing();                                
                                GridBagConstraints reglas = objComponenteGeneradorVinculador.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                            }
                        }
                        else{
                            if(objComponente.getObjControlSwing() != null){
                                configurarPropiedades(objComponente);
                                JComponent jObjGUI = (JComponent) objComponente.getObjControlSwing();
                                GridBagConstraints reglas = objComponenteGeneradorVinculador.getGridBagConstraintsIntoParent(objReglasParent, objComponente);
                                addComponentToView(jObjGUI, objDistribuidor, reglas, objPanel);
                            }
                        }
                    }                    
                }catch (java.lang.NullPointerException ex){
                    Utileria.viewConsole("Error Null - Componente: " + objComponente.getName());
                    continue;
                }
            } 
            return true;
        }catch(java.lang.Exception ex){
            Utileria.viewConsole("Componente: " + objComponenteGeneradorVinculador.getName());
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }
      }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorGeneradorMetodoSetter</code> en un Panel.
     * @param objPanelParent Panel Padre donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @param objComponenteGeneradorMetodoSetter <code>ComponenteDistribuidorGeneradorMetodoSetter</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanelParent, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter){	
      if(objComponenteGeneradorMetodoSetter != null){
            try{        
                GridBagConstraints objReglaSubParent = objComponenteGeneradorMetodoSetter.getGridBagConstraintsActiva();
                objReglaSubParent.gridx += objReglasParent.gridx;
                objReglaSubParent.gridy += objReglasParent.gridy;
                ArrayList<Componente> objComponentes = objComponenteGeneradorMetodoSetter.getComponentesDistribuidos();            
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                        ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                        JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteClaseCompleja);
                        if(objPanelInterno != null){                                                
                            GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                            objDistribuidor.setConstraints(objPanelInterno, reglas);
                            objPanelParent.add(objPanelInterno);
                        }
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                        ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteUnitario);                    
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                        ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteString);                    
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                        ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteEnum);                                        
                    }                
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                        ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteVinculador);                                        
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                        
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }    
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return false;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorMetodoSetter Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorGeneradorMetodoGetter</code> en un Panel.
     * @param objPanelParent Panel Padre donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @param objComponenteGeneradorMetodoGetter <code>ComponenteDistribuidorGeneradorMetodoGetter</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanelParent, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter){	
      if(objComponenteGeneradorMetodoGetter != null){
            try{            
                GridBagConstraints objReglaSubParent = objComponenteGeneradorMetodoGetter.getGridBagConstraintsActiva();
                objReglaSubParent.gridx += objReglasParent.gridx;
                objReglaSubParent.gridy += objReglasParent.gridy;
                ArrayList<Componente> objComponentes = objComponenteGeneradorMetodoGetter.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                        ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                        JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteClaseCompleja);
                        if(objPanelInterno != null){                                                
                            GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                            objDistribuidor.setConstraints(objPanelInterno, reglas);
                            objPanelParent.add(objPanelInterno);
                        }
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                        ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteUnitario);                    
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                        ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteString);                    
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                        ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteEnum);                                        
                    }                
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                        ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteVinculador);                                        
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                        
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return false;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorMetodoGetter Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorGeneradorClaseCompleja</code> en un Panel.
     * @param objPanel Panel donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @param objComponenteGeneradorClase <code>ComponenteDistribuidorGeneradorClaseCompleja</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase){	
      if(objComponenteGeneradorClase != null){
            try{           
                GridBagConstraints objReglaSubParent = objComponenteGeneradorClase.getGridBagConstraintsActiva();
                objReglaSubParent.gridx += objReglasParent.gridx;
                objReglaSubParent.gridy += objReglasParent.gridy;                        
                ArrayList<Componente> objComponentes = objComponenteGeneradorClase.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoSetter){
                            ComponenteDistribuidorGeneradorMetodoSetter objComponenteMetodoSetter = (ComponenteDistribuidorGeneradorMetodoSetter) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteMetodoSetter);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoGetter){
                            ComponenteDistribuidorGeneradorMetodoGetter objComponenteMetodoGetter = (ComponenteDistribuidorGeneradorMetodoGetter) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteMetodoGetter);                                                            
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteUnitario);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteString);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteEnum);                                                            
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteVinculador);                                                            
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteClaseCompleja);                                                            
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanel, objDistribuidor);                                        
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }            
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return false;
        }else{
            UtilRender.printlnConsole("objComponenteGeneradorClase Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorIntegradorMetodo</code> en un Panel.
     * @param objPanelParent Panel Padre donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objComponenteIntegradorMetodo <code>ComponenteDistribuidorIntegradorMetodo</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanelParent, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo){	
      if(objComponenteIntegradorMetodo != null){
            try{         
                GridBagConstraints objReglaSubParent = objComponenteIntegradorMetodo.getGridBagConstraintsActiva();
                objReglaSubParent.gridx += objReglasParent.gridx;
                objReglaSubParent.gridy += objReglasParent.gridy;
                ArrayList<Componente> objComponentes = objComponenteIntegradorMetodo.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteClaseCompleja);
                            if(objPanelInterno != null){                                                
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelInterno, reglas);
                                objPanelParent.add(objPanelInterno);
                            }
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteUnitario);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteString);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteEnum);                                        
                        }                
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteVinculador);                                        
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                        
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }    
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return false;
        }else{
            UtilRender.printlnConsole("objComponenteIntegradorMetodo Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorIntegradorExtra</code> en un Panel.
     * @param objPanel Panel donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @param objComponenteIntegradorExtra <code>ComponenteDistribuidorIntegradorExtra</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @return Panel actualizado con la representación gráfica. 
     * @deprecated método obsoleto, se ha reemplezado por representaciones por tipos de datos.
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanel, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra){	
      if(objComponenteIntegradorExtra != null){
            try{         
                GridBagConstraints objReglaSubParent = objComponenteIntegradorExtra.getGridBagConstraintsActiva();
                objReglaSubParent.gridx += objReglasParent.gridx;
                objReglaSubParent.gridy += objReglasParent.gridy;
                ArrayList<Componente> objComponentes = objComponenteIntegradorExtra.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorExtra){
                            ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanel, objDistribuidor, objReglaSubParent, objComponenteExtra);                                        
                        }                                
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanel, objDistribuidor);                                        
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }    
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return false;
        }else{
            UtilRender.printlnConsole("objComponenteIntegradorExtra Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Ubica la representación de un <code>ComponenteDistribuidorIntegradorSimple</code> en un Panel.
     * @param objPanelParent Panel Padre donde se ubicará la Representación del Componente.
     * @param objDistribuidor Gestor de Distribución del Panel.
     * @param objReglasParent Reglas de Representación para la ubicación en el Panel.
     * @param objComponenteIntegradorSimple <code>ComponenteDistribuidorIntegradorSimple</code> que se Distribuirá en el Contenedor Padre (JPanel).
     * @return Panel actualizado con la representación gráfica.      
     */
    public static boolean ubicarComponenteDistribuidorIntoPanel(JPanel objPanelParent, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple){	
       if(objComponenteIntegradorSimple != null){
            try{         
                GridBagConstraints objReglaSubParent = objComponenteIntegradorSimple.getGridBagConstraintsActiva();
                objReglaSubParent.gridx += objReglasParent.gridx;
                objReglaSubParent.gridy += objReglasParent.gridy;
                ArrayList<Componente> objComponentes = objComponenteIntegradorSimple.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteClaseCompleja);
                            if(objPanelInterno != null){                                                
                                GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                objDistribuidor.setConstraints(objPanelInterno, reglas);
                                objPanelParent.add(objPanelInterno);
                            }
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteUnitario);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteString);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteEnum);                                        
                        }                
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglaSubParent, objComponenteVinculador);                                        
                        }
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                        
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }    
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return false;
    }else{
            UtilRender.printlnConsole("objComponenteIntegradorSimple Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return false;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorGeneradorMetodoSetter</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteGeneradorMetodoSetter <code>ComponenteDistribuidorGeneradorMetodoSetter</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter){	
      try{
        JPanel objPanelParent = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        GridBagConstraints objReglasParent = objComponenteGeneradorMetodoSetter.getObjGridBagConstraints();
        objPanelParent.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanelParent, objComponenteGeneradorMetodoSetter);
        try{            
            ArrayList<Componente> objComponentes = objComponenteGeneradorMetodoSetter.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                    ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteClase);                    
                }                
                else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                    ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteUnitario);
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                    ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteString);
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                    ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteEnum);                    
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                    ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteVinculador);                    
                }
                else if(objComponente instanceof ComponenteGeneradoSimple){
                    try{                    
                        ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                                            
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }
            }  
            return objPanelParent;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return null;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorGeneradorMetodoGetter</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteGeneradorMetodoGetter <code>ComponenteDistribuidorGeneradorMetodoGetter</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter){	
       try{
        JPanel objPanelParent = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        GridBagConstraints objReglasParent = objComponenteGeneradorMetodoGetter.getObjGridBagConstraints();
        objPanelParent.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanelParent, objComponenteGeneradorMetodoGetter);
        try{            
            ArrayList<Componente> objComponentes = objComponenteGeneradorMetodoGetter.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                    ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteClase);                    
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                    ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteUnitario);
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                    ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteString);
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                    ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteEnum);                    
                }                
                else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                    ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                    GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteVinculador);                    
                }
                else if(objComponente instanceof ComponenteGeneradoSimple){
                    try{                    
                        ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                                            
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }
            }  
            return objPanelParent;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return null;
    }catch(java.lang.NullPointerException ex){}
       return null;
    }   
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorGeneradorClaseCompleja</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteGeneradorClaseCompleja <code>ComponenteDistribuidorGeneradorClaseCompleja</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClaseCompleja){	
      try{
        JPanel objPanelParent = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        GridBagConstraints objReglasParent = objComponenteGeneradorClaseCompleja.getObjGridBagConstraints();
        objPanelParent.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanelParent, objComponenteGeneradorClaseCompleja);
        try{            
            ArrayList<Componente> objComponentes = objComponenteGeneradorClaseCompleja.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                if(objComponente instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                    if(!objComponenteDistribuidor.isIncluido())continue;
                    if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoSetter){
                        ComponenteDistribuidorGeneradorMetodoSetter objComponenteMetodoSetter = (ComponenteDistribuidorGeneradorMetodoSetter) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteMetodoSetter);
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoGetter){
                        ComponenteDistribuidorGeneradorMetodoGetter objComponenteMetodoGetter = (ComponenteDistribuidorGeneradorMetodoGetter) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteMetodoGetter);                                        
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                        ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteGenerador);                                        
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                        ComponenteDistribuidorGeneradorString objComponenteGenerador = (ComponenteDistribuidorGeneradorString) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteGenerador);                                        
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                        ComponenteDistribuidorGeneradorEnum objComponenteGenerador = (ComponenteDistribuidorGeneradorEnum) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteGenerador);                                        
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                        ComponenteDistribuidorGeneradorVinculador objComponenteGenerador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteGenerador);                                        
                    }
                }
                else if(objComponente instanceof ComponenteGeneradoSimple){
                    try{                    
                        ubicarComponente(objComponente, objPanelParent, objDistribuidor);                                                            
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }
            } 
            return objPanelParent;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return null;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
   
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorIntegradorMetodo</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteIntegradorMetodo <code>ComponenteDistribuidorIntegradorMetodo</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo){	
      try{
        JPanel objPanelParent = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        GridBagConstraints objReglasParent = objComponenteIntegradorMetodo.getObjGridBagConstraints();
        objPanelParent.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanelParent, objComponenteIntegradorMetodo);
        try{            
            ArrayList<Componente> objComponentes = objComponenteIntegradorMetodo.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                if(objComponente instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                    if(!objComponenteDistribuidor.isIncluido())continue;
                    if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){                    
                        ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                        JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteClaseCompleja);
                        if(objPanelInterno != null){                                                
                            GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                            objDistribuidor.setConstraints(objPanelInterno, reglas);
                            objPanelParent.add(objPanelInterno);
                        }
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                        ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteUnitario);
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                        ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteString);
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                        ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteEnum);                    
                    }                
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                        ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteVinculador);                    
                    }
                }
                else if(objComponente instanceof ComponenteGeneradoSimple){
                    try{                    
                        ubicarComponente(objComponente, objPanelParent, objDistribuidor);                    
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }
            } 
            return objPanelParent;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return null;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorIntegradorSimple</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteIntegradorSimple <code>ComponenteDistribuidorIntegradorSimple</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple){	
      try{
        JPanel objPanelParent = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        GridBagConstraints objReglasParent = objComponenteIntegradorSimple.getObjGridBagConstraints();
        objPanelParent.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanelParent, objComponenteIntegradorSimple);
        try{            
            ArrayList<Componente> objComponentes = objComponenteIntegradorSimple.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                if(objComponente instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                    if(!objComponenteDistribuidor.isIncluido())continue;
                    if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                        ComponenteDistribuidorGeneradorClaseCompleja objComponenteClaseCompleja = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                        JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteClaseCompleja);
                        if(objPanelInterno != null){                                                
                            GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                            objDistribuidor.setConstraints(objPanelInterno, reglas);
                            objPanelParent.add(objPanelInterno);
                        }
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                        ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteUnitario);
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                        ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteString);
                    }
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                        ComponenteDistribuidorGeneradorEnum objComponenteEnum = (ComponenteDistribuidorGeneradorEnum) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteEnum);                    
                    }                
                    else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                        ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteVinculador);                    
                    }
                }
                else if(objComponente instanceof ComponenteGeneradoSimple){
                    try{                    
                        ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }
            } 
            return objPanelParent;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return null;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorIntegradorExtra</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteIntegradorExtra <code>ComponenteDistribuidorIntegradorExtra</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     * @deprecated método obsoleto, reemplezado por representaciones de tipos de datos.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra){	
      try{
        JPanel objPanelParent = new JPanel();                
        GridBagLayout objDistribuidor = new GridBagLayout();
        GridBagConstraints objReglasParent = objComponenteIntegradorExtra.getObjGridBagConstraints();
        objPanelParent.setLayout(objDistribuidor);
        aplicarPreferenciasPanel(objPanelParent, objComponenteIntegradorExtra);
        try{            
            ArrayList<Componente> objComponentes = objComponenteIntegradorExtra.getComponentesDistribuidos();
            for(Componente objComponente : objComponentes){
                if(objComponente instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                    if(!objComponenteDistribuidor.isIncluido())continue;
                    if(objComponente instanceof ComponenteDistribuidorExtra){
                        ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                        GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteExtra);                    
                    }                                
                }
                else if(objComponente instanceof ComponenteGeneradoSimple){
                    try{                    
                        ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                    }catch (java.lang.NullPointerException ex){
                        continue;
                    }
                }
            } 
            return objPanelParent;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return null;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorModeloAsociado</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteDistribuidorModeloAsociado <code>ComponenteDistribuidorModeloAsociado</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.     
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado){	
        try{
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();
            GridBagConstraints objReglasParent = objComponenteDistribuidorModeloAsociado.getObjGridBagConstraints();
            objPanelParent.setLayout(objDistribuidor);
            aplicarPreferenciasPanel(objPanelParent, objComponenteDistribuidorModeloAsociado);
            try{            
                ArrayList<Componente> objComponentes = objComponenteDistribuidorModeloAsociado.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                            ComponenteDistribuidorGeneradorClaseCompleja objComponenteClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteClase);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                            ComponenteDistribuidorGeneradorUnitario objComponenteUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteUnitario);
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                            ComponenteDistribuidorGeneradorString objComponenteString = (ComponenteDistribuidorGeneradorString) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteString);
                        }
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                            ComponenteDistribuidorGeneradorEnum objComponenteEnumSimple = (ComponenteDistribuidorGeneradorEnum) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteEnumSimple);                    
                        } 
                        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                            ComponenteDistribuidorGeneradorVinculador objComponenteVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteVinculador);                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorExtra){
                            ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, objComponenteExtra);                    
                        }                 
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                } 
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }                    
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole("objComponente Nulo.", ex.getMessage(),UtilRender.ACTION_ERROR);
        }
        return null;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorContenedorLibre</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteContenedorAsistenteLibre <code>ComponenteDistribuidorContenedorLibre</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.
     * @deprecated método obsoleto, reemplezado por representaciones de tipos de datos.
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorContenedorLibre objComponenteContenedorAsistenteLibre){
	if(objComponenteContenedorAsistenteLibre != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();        
            aplicarPreferenciasPanel(objPanelParent, objComponenteContenedorAsistenteLibre);
            JTabbedPane objTab = new JTabbedPane();
            if(objComponenteContenedorAsistenteLibre.plantilla_generacion_codigo_fuente == ComponenteDistribuidorContenedor.PLANTILLA_TAB){            
                javax.swing.GroupLayout layout = new javax.swing.GroupLayout(objPanelParent);
                objPanelParent.setLayout(layout);
                layout.setHorizontalGroup(
                    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(objTab, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
                );
                layout.setVerticalGroup(
                    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(objTab, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
                );                             
            }        
            else{
                objPanelParent.setLayout(objDistribuidor);
            }

            try{            
                ArrayList<Componente> objComponentes = objComponenteContenedorAsistenteLibre.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorIntegradorExtra){
                            ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra = (ComponenteDistribuidorIntegradorExtra) objComponente;
                            JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteIntegradorExtra);
                            if(objPanelInterno != null){                        
                                if(objComponenteContenedorAsistenteLibre.plantilla_generacion_codigo_fuente == ComponenteDistribuidorContenedor.PLANTILLA_TAB){
                                    objTab.add(objComponenteContenedorAsistenteLibre.getStrTitulo(), objPanelInterno);
                                }
                                else{
                                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                    objDistribuidor.setConstraints(objPanelInterno, reglas);
                                    objPanelParent.add(objPanelInterno);                                
                                }
                            }
                        }                
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }                                    
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteContenedorAsistenteLibre Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Crea una Representación para el <code>ComponenteDistribuidorContenedorEspejo</code>
     * en un Panel único para un Contenedor de alto nivel.
     * @param objComponenteContenedorAsistenteEspejo <code>ComponenteDistribuidorContenedorEspejo</code> que genera la Representación Gráfica.
     * @return Panel de Representación único para un Contenedor de alto nivel.     
     */
    public static JPanel crearPanelUnicoComponenteDistribuidor(ComponenteDistribuidorContenedorEspejo objComponenteContenedorAsistenteEspejo){
	if(objComponenteContenedorAsistenteEspejo != null){
            JPanel objPanelParent = new JPanel();                
            GridBagLayout objDistribuidor = new GridBagLayout();        
            aplicarPreferenciasPanel(objPanelParent, objComponenteContenedorAsistenteEspejo);
            JTabbedPane objTab = new JTabbedPane();
            if(objComponenteContenedorAsistenteEspejo.plantilla_generacion_codigo_fuente == ComponenteDistribuidorContenedor.PLANTILLA_TAB){            
                javax.swing.GroupLayout layout = new javax.swing.GroupLayout(objPanelParent);
                objPanelParent.setLayout(layout);
                layout.setHorizontalGroup(
                    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(objTab, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
                );
                layout.setVerticalGroup(
                    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(objTab, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
                );                             
            }        
            else{
                objPanelParent.setLayout(objDistribuidor);
            }

            try{            
                ArrayList<Componente> objComponentes = objComponenteContenedorAsistenteEspejo.getComponentesDistribuidos();
                for(Componente objComponente : objComponentes){
                    if(objComponente instanceof ComponenteDistribuidor){
                        ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                        if(!objComponenteDistribuidor.isIncluido())continue;
                        if(objComponente instanceof ComponenteDistribuidorIntegradorMetodo){
                            ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo = (ComponenteDistribuidorIntegradorMetodo) objComponente;                                        
                            JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteIntegradorMetodo);
                            if(objPanelInterno != null){                        
                                if(objComponenteContenedorAsistenteEspejo.plantilla_generacion_codigo_fuente == ComponenteDistribuidorContenedor.PLANTILLA_TAB){
                                    objTab.add(objComponenteIntegradorMetodo.getStrTitulo(), objPanelInterno);
                                }
                                else{
                                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                    objDistribuidor.setConstraints(objPanelInterno, reglas);
                                    objPanelParent.add(objPanelInterno);                                
                                }
                            }                    
                        }
                        else if(objComponente instanceof ComponenteDistribuidorIntegradorSimple){
                            ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple = (ComponenteDistribuidorIntegradorSimple) objComponente;
                            JPanel objPanelInterno = GeneradorGUI.crearPanelInterno(objComponenteIntegradorSimple);
                            if(objPanelInterno != null){                        
                                if(objComponenteContenedorAsistenteEspejo.plantilla_generacion_codigo_fuente == ComponenteDistribuidorContenedor.PLANTILLA_TAB){
                                    objTab.add(objComponenteIntegradorSimple.getStrTitulo(), objPanelInterno);
                                }
                                else{
                                    GridBagConstraints reglas = objComponente.getGridBagConstraintsActiva();
                                    objDistribuidor.setConstraints(objPanelInterno, reglas);
                                    objPanelParent.add(objPanelInterno);                                
                                }
                            }
                        }                
                    }
                    else if(objComponente instanceof ComponenteGeneradoSimple){
                        try{                    
                            ubicarComponente(objComponente, objPanelParent, objDistribuidor);
                        }catch (java.lang.NullPointerException ex){
                            continue;
                        }
                    }
                }   
                return objPanelParent;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorGUI.class.getName()).log(Level.SEVERE, null, ex);
            }        
            return null;
        }else{
            UtilRender.printlnConsole("objComponenteContenedorAsistenteEspejo Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Genera la Representación Gráfica de un <code>Componente</code> y la devuele
     * en un Panel.
     * @param objSeleccionado <code>Componente</code> que generará la Representación Gráfica.
     * @return Panel con la Representación Gráfica del <code>Componente</code>.
     */
    public static JPanel crearVistaPreviaPanel(Componente objSeleccionado) {                
        JPanel objPanelPreview = null;
        if(objSeleccionado instanceof ComponenteDistribuidorContenedorEspejo){                    
            ComponenteDistribuidorContenedorEspejo objComponenteDistribuidorContenedorEspejo = (ComponenteDistribuidorContenedorEspejo) objSeleccionado;
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor(objComponenteDistribuidorContenedorEspejo);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor(objComponenteDistribuidorContenedorEspejo);
            }                        
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorContenedorLibre){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorContenedorLibre) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorContenedorLibre) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorIntegradorMetodo){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorIntegradorMetodo) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorIntegradorMetodo) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorIntegradorSimple){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorIntegradorSimple) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorIntegradorSimple) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorIntegradorExtra){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorIntegradorExtra) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorIntegradorExtra) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorClaseCompleja){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorGeneradorClaseCompleja) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorClaseCompleja) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorMetodoSetter){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorGeneradorMetodoSetter) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorMetodoSetter) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorMetodoGetter){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorGeneradorMetodoGetter) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorMetodoGetter) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorUnitario){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorUnitario) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorUnitario) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorString){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorString) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorString) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorEnum){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorEnum) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorEnum) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorGeneradorVinculador){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorVinculador) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorGeneradorVinculador) objSeleccionado);
            }               
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorExtra){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorExtra) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorExtra) objSeleccionado);
            }                    
        }
        else if(objSeleccionado instanceof ComponenteDistribuidorModeloAsociado){                    
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_PANEL_UNICO)){                        
                objPanelPreview = GeneradorGUI.crearPanelUnicoComponenteDistribuidor((ComponenteDistribuidorModeloAsociado) objSeleccionado);
            }                
            else{
                objPanelPreview = GeneradorGUI.crearPanelComponenteDistribuidor((ComponenteDistribuidorModeloAsociado) objSeleccionado);
            }                    
        }
        return objPanelPreview;
    }
    
    /**
     * Crear un Border con Titulo para un Contenedor de Alto Nivel.
     * @param strTitle Titulo del border.
     * @return Border con Titulo para un Contenedor de Alto Nivel.
     */
    public static Border crearBordePanel(String strTitle){
        try{
            return javax.swing.BorderFactory.createTitledBorder(
                    null,
                    "Vista Previa: " + strTitle,
                    javax.swing.border.TitledBorder.CENTER,
                    javax.swing.border.TitledBorder.TOP);        
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole("objComponente Nulo.", ex.getMessage(),UtilRender.ACTION_ERROR);
        }
        return null;
    }
    
    /**
     * Aplica las Preferencias de Configuración del Usuario en para un JPanel.
     * @param objPanel Representación Gráficas.
     * @param objComponente Componente que Genera la Representación Grafica.
     */
    public static void aplicarPreferenciasPanel(JPanel objPanel, Componente objComponente){
      if(objComponente != null){  
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_BORDER_PANEL)){
                if(objComponente instanceof ComponenteDistribuidorContenedor){
                    ComponenteDistribuidorContenedor obj = (ComponenteDistribuidorContenedor) objComponente;
                    objPanel.setBorder(GeneradorGUI.crearBordePanel(obj.getStrTitulo()));                
                }
                else if(objComponente instanceof ComponenteDistribuidorIntegrador){
                    ComponenteDistribuidorIntegrador obj = (ComponenteDistribuidorIntegrador) objComponente;
                    objPanel.setBorder(GeneradorGUI.crearBordePanel(obj.getStrTitulo()));                
                }
                else if(objComponente instanceof ComponenteDistribuidorGenerador){
                    ComponenteDistribuidorGenerador obj = (ComponenteDistribuidorGenerador) objComponente;
                    objPanel.setBorder(GeneradorGUI.crearBordePanel(obj.getStrTitulo()));                
                }
                else{
                    objPanel.setBorder(GeneradorGUI.crearBordePanel(""));
                }
            }        
            if(UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_REPRESENTACION_COLOR_PANEL)){
                objPanel.setOpaque(true);
                objPanel.setBackground(objComponente.objColor);
            }
       }else{
            UtilRender.printlnConsole("objComponente Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
    }
    
    /**
     * Crear la Representación de un Componente Distribuidor en un Panel que se asume
     * será incluido en un contenedor gráfico..
     * @param objComponenteDistribuidor Componente que Representa el Panel Interno.
     * @return Panel que representa el Componente Distribuidor.
     */
    public static JPanel crearPanelInterno(ComponenteDistribuidor objComponenteDistribuidor){
        try{
            JPanel objPanelInterno = new JPanel();                
            GridBagLayout objDistribuidorInterno = new GridBagLayout();
            GridBagConstraints objGridBagConstraints = objComponenteDistribuidor.getObjGridBagConstraints();
            aplicarPreferenciasPanel(objPanelInterno, objComponenteDistribuidor);
            objPanelInterno.setLayout(objDistribuidorInterno);
            GeneradorGUI.ubicarComponenteDistribuidorIntoPanelInterno(objPanelInterno, objDistribuidorInterno, objGridBagConstraints, objComponenteDistribuidor);
            return objPanelInterno;
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole("objComponente Nulo.", ex.getMessage(),UtilRender.ACTION_ERROR);
        }
        return null;
    }
    
    /**
     * Ubica la Representación de un Componente Distribuidor en un Panel.
     * @param objPanelParent Panel Destino.
     * @param objDistribuidor Gestor de Distribución.
     * @param objReglasParent Reglas de Distribución.
     * @param objComponenteDistribuidor Componente que Representa el área Grafica que se incluirá en el panel Destino.
     */
    public static void ubicarComponenteDistribuidorIntoPanelInterno(JPanel objPanelParent, GridBagLayout objDistribuidor, GridBagConstraints objReglasParent, ComponenteDistribuidor objComponenteDistribuidor){	
        if(objComponenteDistribuidor instanceof ComponenteDistribuidorContenedorEspejo){
            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, (ComponenteDistribuidorContenedorEspejo) objComponenteDistribuidor);
        }
        else if(objComponenteDistribuidor instanceof ComponenteDistribuidorIntegradorMetodo){
            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, (ComponenteDistribuidorIntegradorMetodo) objComponenteDistribuidor);
        }
        else if(objComponenteDistribuidor instanceof ComponenteDistribuidorIntegradorSimple){
            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, (ComponenteDistribuidorIntegradorSimple) objComponenteDistribuidor);
        }
        else if(objComponenteDistribuidor instanceof ComponenteDistribuidorGeneradorClaseCompleja){
            GeneradorGUI.ubicarComponenteDistribuidorIntoPanel(objPanelParent, objDistribuidor, objReglasParent, (ComponenteDistribuidorGeneradorClaseCompleja) objComponenteDistribuidor);
        }
        
    }
    
    /**
     * Devuelve las Dimensiones estimadas para un correcta visualización de la Representación
     * grafica del Componente Distribuidor.
     * @param objComponente Componenete que contiene la Representación Gráfica.
     * @return Objeto con las Dimesiones estimadas.
     */
    public static Dimension getDimesionDefaulPreviewOnlyPanel(ComponenteDistribuidor objComponente){
        if(objComponente instanceof ComponenteDistribuidorContenedorEspejo){ 
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);
        }
        else if(objComponente instanceof ComponenteDistribuidorContenedorLibre){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);                                
        }
        else if(objComponente instanceof ComponenteDistribuidorIntegradorMetodo){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);                                
        }
        else if(objComponente instanceof ComponenteDistribuidorIntegradorSimple){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);                                
        }
        else if(objComponente instanceof ComponenteDistribuidorIntegradorExtra){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);
                                
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoSetter){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);                                
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoGetter){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);                                
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){                    
            return new Dimension(320, 240);                    
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){                    
            return new Dimension(320, 240);                                        
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){                    
            return new Dimension(320, 240);                                        
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){                    
            return new Dimension(320, 240);                                   
        }
        else if(objComponente instanceof ComponenteDistribuidorExtra){                    
            return new Dimension(320, 240);                                        
        }
        else if(objComponente instanceof ComponenteDistribuidorModeloAsociado){                    
            int maxGridX = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeWidthColection();
            int maxGridY = objComponente.getObjDistribuidorGrupalSeleccionado().getSizeHeightColection();
            return new Dimension(maxGridX * 20, maxGridY * 10);                                
        }
        return null;
    }
    
    /**
     * Asigna el Gestor de Distribución GroupBoxLayout al Dialogo actual con
     * una plantilla por defecto.
     * @param objPreviewPanel Vista.
     * @param objVentana Contenedor de alto Nivel.
     */
    public static void generarDistribuciondialog(JPanel objPreviewPanel, JDialogPreviewModeloAsociado objVentana){
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(objVentana.getContentPane());
        objVentana.getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(objPreviewPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(objVentana.getjButtonOk(), javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(objVentana.getjButtonCancel(), javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(objPreviewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(objVentana.getjButtonOk())
                    .addComponent(objVentana.getjButtonCancel()))
                .addContainerGap())
        );
    }    
   
    public static JMenuBar createMenu(ComponenteDistribuidor objComponenteDistribuidor){
        JMenuBar objBarraMenu = new JMenuBar();  
        if(objComponenteDistribuidor.hasMenuAvailable()){
            objBarraMenu.add(createMenuPane(objComponenteDistribuidor));
        }
        for(Componente objComponente : objComponenteDistribuidor.getComponentesDistribuidos()){
            if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja ||
                    objComponente instanceof ComponenteDistribuidorIntegrador ||
                    objComponente instanceof ComponenteDistribuidorContenedor){
                ComponenteDistribuidor objComponenteDistribuidorInterno = (ComponenteDistribuidor) objComponente;
                if(objComponenteDistribuidorInterno.hasMenuAvailable()){
                    //objBarraMenu.add(createMenuPane(objComponenteDistribuidorInterno));
                    createMenuPane(objBarraMenu,objComponenteDistribuidorInterno);
                }
            }            
        }        
        return objBarraMenu;
    }
    
    
    public static  JMenu createMenuPane(ComponenteDistribuidor objComponenteDistribuidor){
        JMenu menu;        
        menu = new JMenu(objComponenteDistribuidor.getObjMenu().getStrTitle());        
        for(OptionMenuPane objOption : objComponenteDistribuidor.getObjMenu().getObjOptions()){
            menu.add(createOptionMenuPane(objOption));
        }
        return menu;
    }
    
    public static  void createMenuPane(JMenuBar objBarraMenu, ComponenteDistribuidor objComponenteDistribuidor){
        JMenu menu;        
        menu = new JMenu(objComponenteDistribuidor.getObjMenu().getStrTitle());        
        for(OptionMenuPane objOption : objComponenteDistribuidor.getObjMenu().getObjOptions()){
            menu.add(createOptionMenuPane(objOption));
        }
        objBarraMenu.add(menu);
        for(Componente objComponente : objComponenteDistribuidor.getComponentesDistribuidos()){
            if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja ||
                    objComponente instanceof ComponenteDistribuidorIntegrador ||
                    objComponente instanceof ComponenteDistribuidorContenedor){
                ComponenteDistribuidor objComponenteDistribuidorInterno = (ComponenteDistribuidor) objComponente;
                if(objComponenteDistribuidorInterno.hasMenuAvailable()){
                    createMenuPane(objBarraMenu,(ComponenteDistribuidor) objComponente);
                }
            }            
        }        
    }
    
    public static  JMenuItem createOptionMenuPane(OptionMenuPane objOption){
        JMenuItem menuItem;        
        menuItem = new JMenuItem(objOption.getStrLabel()); 
        menuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                UtilRender.msgInformacion("Opción No Disponible en Vista Previa.");
            }
        });
        return menuItem;
    }
}